{
  "id": "two-factor",
  "status": "default-inactive",
  "type": "login",
  "onboard": true,
  "keywords": [
    "2fa",
    "multi-factor",
    "mfa"
  ],
  "title": "Two-Factor",
  "description": "Two-Factor Authentication greatly increases the security of your WordPress user account by requiring an additional code along with your username and password to log in.",
  "help": "Two-Factor authentication is a tried and true security method that will stop most automated bot attacks on the WordPress login screen. Once Two-Factor Authentication is enabled here, users can visit their profile settings to enable it on their account.",
  "user-groups": {
    "exclude_group": {
      "type": "multiple",
      "title": "Skip Two-Factor Onboarding",
      "description": "By default, when a user logs in via the WordPress Login Page, Solid Security will prompt them to setup Two-Factor. Optionally, you can skip the two-factor authentication on-boarding process for certain users. Users can still manually enroll in two-factor through their WordPress admin profile."
    },
    "application_passwords_group": {
      "type": "multiple",
      "title": "Application Passwords",
      "description": "Use Application Passwords to allow authentication without providing your actual password when using non-traditional login methods such as XML-RPC or the REST API. Application passwords are easily revoked and can never be used in the traditional login process.",
      "default": "all"
    }
  },
  "settings": {
    "type": "object",
    "properties": {
      "available_methods": {
        "type": "string",
        "oneOf": [
          {
            "enum": [
              "all"
            ],
            "title": "All Methods (recommended)"
          },
          {
            "enum": [
              "not_email"
            ],
            "title": "All Except Email"
          },
          {
            "enum": [
              "custom"
            ],
            "title": "Select Methods Manually"
          }
        ],
        "default": "all",
        "title": "Authentication Methods Available to Users",
        "description": "Solid Security supports multiple two-factor authentication methods: mobile apps, email messages, and backup codes. Selecting “All Methods” is highly recommended so that users can choose the method that works the best for them."
      },
      "custom_available_methods": {
        "type": "array",
        "items": {
          "type": "string",
          "oneOf": [],
          "pattern": "^[a-zA-Z_\\x80-\\xff][a-zA-Z0-9_\\x80-\\xff]*$"
        },
        "uniqueItems": true,
        "minItems": 1,
        "default": [
          "Two_Factor_Totp",
          "Two_Factor_Email",
          "Two_Factor_Backup_Codes"
        ],
        "title": "Select Available Methods"
      },
      "disable_first_login": {
        "type": "boolean",
        "default": false,
        "title": "Disable on First Login",
        "description": "This simplifies the signup flow for users who require two-factor to be enabled for their account."
      },
      "on_board_welcome": {
        "type": "string",
        "default": "",
        "title": "Onboarding Welcome Text",
        "description": "Customize the text shown to users at the beginning of the Two-Factor onboarding flow."
      }
    },
    "uiSchema": {
      "custom_available_methods": {
        "ui:widget": "checkboxes"
      },
      "on_board_welcome": {
        "ui:widget": "textarea"
      },
      "ui:sections": [
        {
          "title": "Methods",
          "fields": [
            "available_methods",
            "custom_available_methods"
          ]
        },
        {
          "title": "Setup Flow",
          "fields": [
            "disable_first_login",
            "on_board_welcome"
          ]
        }
      ]
    }
  },
  "conditional-settings": {
    "custom_available_methods": {
      "settings": {
        "type": "object",
        "properties": {
          "available_methods": {
            "type": "string",
            "enum": [
              "custom"
            ]
          }
        }
      }
    }
  },
  "removed-settings": [
    "protect_user_type",
    "protect_user_type_roles",
    "allow_remember",
    "allow_remember_roles",
    "application_passwords_type",
    "application_passwords_roles",
    "exclude_type",
    "exclude_roles"
  ],
  "telemetry-settings": {
    "available_methods": true,
    "custom_available_methods": true,
    "disable_first_login": true
  },
  "encryption": {
    "user-meta": [
      "_two_factor_totp_key"
    ]
  }
}
